// 引入请求方法
import { request } from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data: {
    // 左侧的菜单数据
    leftMenuList: [],
    // 商品数据
    rightContent: [],
    // 点击的左侧菜单
    currentIndex: 0,
    // 右侧内容的滚动条距离顶部的距离
    scrollTop: 0
  },
  //接口的返回数据
  Cates: [],
  onLoad: function (options) {
    /*
      web中本地存储和小程序中的存储区别
      1 写代码方式不一样
        web: localStorage.setItem("key","value")  localStorage.getItem("key")
        小程序中 wx.setStorageSync("key", "value");  wx.getStorageSync("key");
      2 存的时候 有没有做类型转换
        web 不管存入的是什么数据，最终都会先调用 toString() 把数据转换为字符串，再存入进去
        小程序中 不存在类型转换，存什么获取什么
      发送请求前判断本地存储中有没有旧的数据
      (time:Date.now(), data:[...])
       没有就数据，直接发送请求，
       有就的数据，且就的数据没有过期
    */
   // 1. 获取本地存储中的数据
   const Cates = wx.getStorageSync("cates");
   // 2 开始做判断
   if(!Cates) {
     // 不存在就发送请求获取数据
       this.getCates();
   }else{
     // 有旧的数据，定义一个过期时间 10s 改成五分钟
     if(Date.now-Cates.time>10000){
      // 超过10s就重新发送数据
     }else{
       // 可以使用旧的数据
       this.Cates = Cates.data;
       let leftMenuList = this.Cates.map(v=>v.cat_name);
       let rightContent = this.Cates[0].children;
       this.setData({
         leftMenuList,
         rightContent
       })
     }
   }
  },
  // 获取分类数据
  async getCates() {
    const res = await request({url: "/categories"})
    this.Cates = res;
      // 把接口数据存入本地存储中
      wx.setStorageSync("cates", {time:Date.now(),data:this.Cates});
        
      // 构造左侧的大菜单数据
      let leftMenuList = this.Cates.map(v=>v.cat_name);
      // 构造右侧的商品数据
      let rightContent = this.Cates[0].children;
      this.setData({
        leftMenuList,
        rightContent
      })
  },
  // 左侧菜单点击事件
  handleItemTab(e) {
    /* 
      1 获取被点击的标题身上的索引
      2 给data中的currentIndex赋值
      3 根据不同的索引来改变右侧数据
     */
    const index = e.currentTarget.dataset.index;
    let rightContent = this.Cates[index].children;
    this.setData({
      currentIndex: index,
      rightContent,
      // 重新设置 右侧内容的scroll-view标签的距离顶部的距离
      scrollTop: 0
    })
  }
})